//导入数据库约束 
const userModel = require('../db/user')
//2.因为涉及登录注册从而涉及密码加密 所以需要导入加密模块
const bcryptjs  = require('bcryptjs')
//4.导入

//3.处理中转站下发的事件 因为有导入模块也就是可以导出数据 所以可以写在发导出数据的方法中 
 module.exports = {
    //执行这里的语句也就是提交了注册的方法 所以需要读取页面的post请求 也就是读取页面输入的数据
    register(req,res){
        //接收数据
        let{username,password,email,tel} = req.body
        //接收到数据后 首先重要数据是否为空
        if(!username || !password ){
            //res.josn 发送一个 JSON 格式的响应
            res.json({
                error_code:2,
                msg:'数据不可以为空'
            })
            return
        }

        //若是通过了用户名跟密码的判断了 证明都输入 接下来就可以验证输入的 用户名跟密码 是否被注册过 
        //用findOne查找数据库中是否有这一个对象
        userModel.find({username},(err,docs)=>{
            if(err){
                throw new Error (err)
            }
            // err为错误信息
            //docs为查询结果信息 ---- 在find返回数组 findOne返回对象
            if(docs.length){
                res.json({
                    error_code:1,
                    msg:'用户被占领'
                })
                return
            }
            
            //代码执行到这里时 证明数据库中没有注册页面的中要注册的用户名
            //就可以向数据添加数据
                //向数据库添加数据的代码是 insertMany()
                userModel.insertMany({
                    username,
                    password: bcryptjs.hashSync(password,10),
                    userid:Math.random().toString().slice(2,22) ,
                    email,
                    tel
                }, (err,docs)=>{
                    if(err){
                        throw new Error(err)
                    }
                    res.json({
                        error_code:0,
                        msg:'注册成功',
                        date:docs
                        
                    })
                    return
                })
        })
    },

    login(req,res){
        //读取页面的数据
        let {username,password} = req.body
        if(!username || ! password ){
            res.json({
                error_code:1,
                msg:"数据不可以为空"
            })
            return
        }
        //判断输入进来的数据不为空就可以接着写了 
        // 登录
        userModel.findOne({username},(err,docs) =>{
            if(err){
                throw new Error (err)
            }
            if(!docs){
                res.json({
                    error_code:1,
                    msg:'没有注册'
                })
                return
            }
            console.log(password,docs.password);
            //判断密码是否正确     解密
            let bool = bcryptjs.compareSync(password,docs.password)
            if(bool){
                res.json({
                    error_code:0,
                    msg:'登录成功',
                    date:docs
                })
                return
            }
            res.json({
                error_code:1,
                msg:'登录失败'
            })
        })
        
    }
 }
